package com.dcj.seas.todocupones.utils;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;

import android.util.Log;

import com.dcj.seas.todocupones.model.OfertaBean;

public class DatosEstaticos {

	private static List<OfertaBean> listadoOfertas;

	private static boolean centrado;

	private static boolean internet;

	//
	// public static List<OfertaBean> getPuntosOfertas() {
	// return listadoOfertas != null ? listadoOfertas
	// : new ArrayList<OfertaBean>();
	// }
	//
	// public static void setPuntosOfertas(List<OfertaBean> puntosOfertas) {
	// if (listadoOfertas == null) {
	// // Si no esta instanciado lo creo
	// listadoOfertas = new ArrayList<OfertaBean>();
	// }
	// listadoOfertas = puntosOfertas;
	// }

	public static List<OfertaBean> getListadoOfertas() {
		return listadoOfertas;
	}

	public static void setListadoOfertas(List<OfertaBean> listadoOfertas) {
		DatosEstaticos.listadoOfertas = listadoOfertas;
	}

	public static List<OfertaBean> getListadoOfertasFiltradas(
			String nombreEmpresa) {
		List<OfertaBean> listadoOfertas = getListadoOfertas();
		List<OfertaBean> listadoOfertasFiltradas = new ArrayList<OfertaBean>();

		try {
			if (nombreEmpresa.equals("Todas")) {
				return getListadoOfertas();
			}
			for (OfertaBean ofertaBean : listadoOfertas) {
				if (nombreEmpresa.equalsIgnoreCase(ofertaBean.getEmpresa())) {
					listadoOfertasFiltradas.add(ofertaBean);
				}
			}
		} catch (Exception e) {
			System.out.println("Error");
		}
		return listadoOfertasFiltradas;
	}

	public static boolean isCentrado() {
		return centrado;
	}

	public static void setCentrado(boolean centrado) {
		DatosEstaticos.centrado = centrado;
	}

	public static String calcularPorcentaje(String precioActual,
			String precioAnterior) {

		String result = null;
		Log.i("calcularPorcentaje", "precioactual: " + precioActual
				+ " precio anterior: " + precioAnterior);
		double bDPrecioActual = new BigDecimal(precioActual).doubleValue();
		double bDPrecioAnterior = new BigDecimal(precioAnterior).doubleValue();

		double resultado = (bDPrecioActual * 100.0) / bDPrecioAnterior;
		resultado = 100 - resultado;
		result = String.valueOf(Math.rint(resultado));
		DecimalFormat formateador = new DecimalFormat("###0.##");
		try {
			result = formateador.parse(result).toString();
		} catch (ParseException e) {
			Log.e("calcularPorcentaje",
					"error al calcular el porcentaje, se devuelve '-' ");
			e.printStackTrace();
			result = "-";
		}
		return result;
	}

	public static String calcularPrecioAnterior(String precioActual,
			String porcentaje) {
		// formula: precio/(porcentaje/100)
		double dPrecioActual = new BigDecimal(precioActual).doubleValue();
		double dPorcentaje = new BigDecimal(porcentaje).doubleValue();

		double resultado = (dPrecioActual * 100) / (100 - dPorcentaje);
		DecimalFormat formateador = new DecimalFormat("###0.##");
		String result;
		try {
			result = formateador.parse(String.valueOf(resultado)).toString();
		} catch (ParseException e) {
			Log.e("calcularPorcentaje",
					"error al calcular el porcentaje, se devuelve '-' ");
			e.printStackTrace();
			result = "-";
		}

		return result;
	}
	
	
	public static String quitarDecimales(String precio){
		try{
			precio = precio.replace(".00", "");
		}catch(NullPointerException ne){
			Log.e("quitarDecimales","Null Pointer al hacer replace de: " + precio);
		}
		return precio;
	}

	public static String calcularPrecioActual(String precioAnterior,
			String porcentaje) {
		
		String result = null;
		Log.i("calcularPrecioACtual", "precioAnterior: " + precioAnterior
				+ " porcentaje: " + porcentaje);
		double bDPrecioAnterior = new BigDecimal(precioAnterior).doubleValue();
		double bDPorcentaje = new BigDecimal(porcentaje).doubleValue();
		
		double bDPrecioActual =bDPrecioAnterior - (bDPrecioAnterior*bDPorcentaje/100);
		
		result = String.valueOf(Math.rint(bDPrecioActual));
		DecimalFormat formateador = new DecimalFormat("###0.##");
		try {
			result = formateador.parse(result).toString();
		} catch (ParseException e) {
			Log.e("calcularPorcentaje",
					"error al calcular el porcentaje, se devuelve '-' ");
			e.printStackTrace();
			result = "-";
		}
		
		return result;
	}

	public static boolean isInternet() {
		return internet;
	}

	public static void setInternet(boolean internet) {
		DatosEstaticos.internet = internet;
	}

}
